import { useState } from 'react'
import { PDFDocument, StandardFonts, rgb } from 'pdf-lib'
// import { StandardFonts } from 'pdf-lib/src/api/standard-fonts';
export const PdfGenerator = () => {
  const [loading, setLoading] = useState(false)

  // 生成 PDF 的核心逻辑
  const generatePdf = async () => {
    setLoading(true)
    try {
      // 创建新 PDF 文档
      const pdfDoc = await PDFDocument.create()

      // 嵌入标准字体
      const font = await pdfDoc.embedFont(StandardFonts.Helvetica)

      // 添加页面
      const page = pdfDoc.addPage([600, 400])

      // 绘制文本
      page.drawText('Hello PDF-LIB!', {
        x: 50,
        y: 350,
        size: 30,
        font,
        color: rgb(0, 0.53, 0.71)
      })

      // 添加动态内容
      const timeStamp = new Date().toLocaleString()
      page.drawText(`Generated at: ${timeStamp}`, {
        x: 50,
        y: 300,
        size: 12,
        font,
        color: rgb(0, 0, 0)
      })

      // 序列化 PDF
      const pdfBytes = await pdfDoc.save()

      // 创建 Blob 并下载
      const blob = new Blob([pdfBytes], { type: 'application/pdf' })
      const link = document.createElement('a')
      link.href = URL.createObjectURL(blob)
      link.download = 'generated-file.pdf'
      link.click()
      URL.revokeObjectURL(link.href)
    } catch (error) {
      console.error('PDF generation failed:', error)
    } finally {
      setLoading(false)
    }
  }
  /* 
// 加载现有 PDF 模板
const modifyPdf = async (arrayBuffer: ArrayBuffer) => {
  const pdfDoc = await PDFDocument.load(arrayBuffer);
  // ... 修改操作 ...
  return pdfDoc.save();
};

// 使用示例
const handleModify = async () => {
  const response = await fetch('/template.pdf');
  const arrayBuffer = await response.arrayBuffer();
  const modifiedPdfBytes = await modifyPdf(arrayBuffer);
  // ... 下载逻辑 ...
};

*/
  /*
// 使用自定义字体
// 从 URL 加载字体
const loadCustomFont = async (pdfDoc: PDFDocument, fontUrl: string) => {
  const fontResponse = await fetch(fontUrl);
  const fontBytes = await fontResponse.arrayBuffer();
  return pdfDoc.embedFont(fontBytes);
};

// 使用示例
const font = await loadCustomFont(pdfDoc, '/fonts/SourceHanSans.otf');
page.drawText('你好 PDF-LIB', { font });

*/
  return (
    <div>
      <button
        onClick={generatePdf}
        disabled={loading}
        className="pdf-button" // 添加你的样式
      >
        {loading ? 'Generating...' : 'Generate PDF'}
      </button>
    </div>
  )
}
